LLM 邊緣部署與優化搭配 llama.cpp
在邊緣 AI 平台上使用 llama.cpp 部署和優化大語言模型的完整指南。
使用案例
應用:邊緣 AI 設備(NVIDIA Jetson、Intel x86 等)上的 LLM 推論
背景:
- 客戶需求:在邊緣平台上改善 LLM 推論速度
- 平台:ASR-A702 / NVIDIA Jetson Thor
- 模型:透過 llama.cpp 的 Qwen3.6
- 挑戰:輸出速度 46 t/s(每秒 token 數)影響使用者體驗
背景分析
為什麼邊緣 AI 用於 LLM?
在邊緣設備上運行 LLM 提供顯著優勢:
優點:
- ✅ 低延遲推論(無需網路往返)
- ✅ 隱私和資料安全(本地處理)
- ✅ 離線能力(無需網際網路)
- ✅ 成本效益(減少雲端成本)
- ✅ 可擴展性(分散式部署)
llama.cpp 與 Ollama 比較
llama.cpp 與 Ollama 比較

💡 注意:此比較強調了 llama.cpp 和 Ollama 在邊緣部署場景中的架構和性能差異。
性能背景
每秒 token 數(t/s):
- 人類閱讀速度:15-20 t/s
- 目前系統:48 t/s(人類閱讀速度的 2 倍)
- 目標:優化以提供更好的使用者體驗
邊緣 vs 雲端:
- 邊緣設備推論 ≠ 雲端多 GPU 資料中心
- 目標:系統性地測試設定如何影響推論速度
實施步驟
步驟 1:驗證 GPU 加速
先決條件:
- 已安裝 NVIDIA JetPack SDK
- 已啟用 CUDA 加速
- 正確配置 GPU 驅動
驗證:
# 檢查 JetPack 版本
cat /etc/nv_tegra_release
# 檢查 GPU 狀態
nvidia-smi
# 驗證 CUDA 可用性
/usr/local/cuda/bin/nvcc --version
步驟 2:下載並編譯 llama.cpp
需求:
- 已啟用 CUDA 支援
- CMake 建置系統
- 具有計算能力 ≥ 7.0 的 NVIDIA GPU
建置程序:
# 複製 llama.cpp 儲存庫
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
# 使用 CUDA 支援配置
mkdir build && cd build
cmake .. -DLLAMA_CUDA=ON -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc
make -j$(nproc)
輸出二進位檔案:
llama-cli:互動式推論介面llama-bench:性能基準測試工具llama-server:用於 API 訪問的 HTTP 伺服器
步驟 3:下載 GGUF 模型
從 huggingface 下載模型,我們使用 unsloth/Qwen3.6-35B-A3B-GGUF 作為範例。

步驟 4:執行基準測試(客戶參數)
基準測試:
./build/bin/llama-bench \
-m ./Qwen3.6-35B-A3B-MXFP4_MOE.gguf \
-ngl 99 \ # 將所有層卸載到 GPU
-fa 1 \ # 啟用 flash attention
-ub 2048 -b 4096 \
-t 12 \ # 12 個執行緒(可用 14 個核心)
--cache-type-k q8_0 --cache-type-v q8_0 \
-p 512,1024,2048,4096,8192,16284,32768 \
-n 128,256,512,1024,2048
結果:
- 初始吞吐量:約 48 t/s
- 系統穩定運行但性能受限

步驟 5:熱管理 - 風扇全速
動作:
- 將風扇速度設置為 100% 最大
- 監控熱降頻狀態
驗證:
$ sudo systemctl disable nvfancontrol.service
$ sudo systemctl stop nvfancontrol
$ sudo su //密碼是 ubuntu
$ echo 0 > /sys/class/hwmon/hwmon2/pwm1
步驟 6:鎖定到最大性能模式
性能配置:
# 啟用最大性能模式
sudo nvpmodel -m 0
# 鎖定 CPU 和 GPU 頻率
sudo jetson_clocks

步驟 7:執行模型推論(llama-cli)
優化執行:
./build/bin/llama-cli -m ~/Downloads/Qwen3.6-35B-A3B-MXFP4_MOE.gguf \
-ngl 99 \
-fa 1 \
-ub 2048 \
-b 4096 \
-t 12 \
--cache-type-k q8_0 --cache-type-v q8_0 \
-n 512 \
-p "what's up"
結果:
- 基準:約 48 t/s(伴隨熱降頻)
- 性能模式後:約 52 t/s(提升 8%)

步驟 8:啟動 Web UI(llama-server)
伺服器設置:
./build/bin/llama-server \
-m ~/Downloads/Qwen3.6-35B-A3B-MXFP4_MOE.gguf \
-ngl 99 \
-fa 1 \
-ub 2048 \
-b 4096 \
-t 12 \
--cache-type-k q8_0 \
--cache-type-v q8_0 \
--ctx-size 8192 \
--host 0.0.0.0 \
--port 8080
從瀏覽器存取

結論
關鍵發現
基準已重現:
- ✅ 確認約 48 t/s
- ✅ 在邊緣設備上達到人類閱讀速度的 2 倍,這不是使用者體驗問題
硬體配置:
- ✅ 風扇 100% + MAX 性能模式(nvpmodel -m 0)+ 鎖定時鐘(jetson_clocks)
- ✅ 吞吐量:52 t/s — 比基準提升 8%
建議
-
熱管理至關重要
- 確保持續性能所需的充分散熱
- 在推論期間使用最大風扇速度
- 監控熱降頻指標
-
性能模式鎖定
- 始終使用
nvpmodel -m 0獲得最大性能 - 套用
jetson_clocks鎖定頻率
- 始終使用